home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr48 / vdl020d.zip / VMIDI.DOC < prev    next >
Text File  |  1993-04-14  |  7KB  |  270 lines

  1. {
  2.  ════════════════════════════════════════════════════════════════════════════
  3.  
  4.  Visionix Music Instrument Digital Interface (VMIDI)
  5.  Copyright 1991,92,93 Visionix
  6.  ALL RIGHTS RESERVED
  7.  
  8.  ────────────────────────────────────────────────────────────────────────────
  9.  
  10.  Revision history in reverse chronological order:
  11.  
  12.  Initials  Date      Comment
  13.  ────────  ────────  ────────────────────────────────────────────────────────
  14.  
  15.  lpg       03/16/93  Added Source Documentation
  16.  
  17.  mep       02/11/93  Cleaned up code for beta release
  18.  
  19.  jrt       02/08/93  Sync with beta 0.12 release
  20.  
  21.  jrt       11/21/92  Sync with beta 0.08
  22.  
  23.  jrt       09/01/92  First logged revision.
  24.  
  25.  ════════════════════════════════════════════════════════════════════════════
  26. }
  27.  
  28.  
  29. Unit VMidi;
  30.  
  31.  
  32. {────────────────────────────────────────────────────────────────────────────}
  33.  
  34. Type
  35.  
  36.   TError = WORD;
  37.  
  38.   TMidiMessage = RECORD
  39.  
  40.     Status  : BYTE;
  41.     Data1   : BYTE;
  42.     Data2   : BYTE;
  43.  
  44.   END;
  45.  
  46.   TMidiHandle = WORD;
  47.  
  48.   {----}
  49.  
  50.   TMidiCaps = RECORD
  51.  
  52.     ManufacturerID : WORD;
  53.     ProductID      : WORD;
  54.     DriverVersion  : WORD;
  55.     Name           : String[20];
  56.     Technology     : WORD;
  57.     Voices         : WORD;
  58.     Notes          : WORD;
  59.     ChannelMask    : WORD;
  60.     Support        : WORD;
  61.  
  62.   END;
  63.  
  64.   PMidiCaps = ^TMidiCaps;
  65.  
  66.   {----}
  67.  
  68.   PMidiBuffHeader = ^TMidiBuffHeader;
  69.  
  70.   TMidiBuffHeader = RECORD
  71.  
  72.     Data          : Pointer;
  73.     BufferLength  : WORD;
  74.     BytesRecorded : WORD;
  75.     User          : Pointer;
  76.     Flags         : LONGINT;
  77.     Next          : PMidiBuffHeader;
  78.     Reserved      : LONGINT;
  79.  
  80.   END;
  81.  
  82.   {----}
  83.  
  84.   TMidiCallBack = Procedure( Signal : WORD;
  85.                              Param1 : Longint;
  86.                              Param2 : Longint   );
  87.  
  88.  
  89.  
  90.   {-----------}
  91.   { - - - - - }
  92.   { Driver    }
  93.   { - - - - - }
  94.   {-----------}
  95.  
  96.  
  97. Const
  98.  
  99.   MDS_Changed   = 1;
  100.   MDS_Install   = 2;
  101.  
  102.   MDF_DriverNew       = 1;
  103.   MDF_MidiInOpen      = 2;
  104.   MDF_MidiInAddBuffer = 3;
  105.   MDF_MidiInReset     = 4;
  106.   MDF_MidiInStart     = 5;
  107.   MDF_MidiInStop      = 6;
  108.   MDF_MidiInClose     = 7;
  109.  
  110.  
  111. Type
  112.  
  113.   TMPU401DriverInfo = RECORD
  114.  
  115.     IRQ         : BYTE;
  116.     IOPort      : WORD;
  117.  
  118.     InOpen      : BOOLEAN;
  119.     OutOpen     : BOOLEAN;
  120.  
  121.     InHandle    : TMidiHandle;
  122.     OutHandle   : TMidiHandle;
  123.  
  124.     IBH         : PMidiBuffHeader;
  125.  
  126.     CurrIBH     : PMidiBuffHeader;
  127.  
  128.     InCallBack  : TMidiCallBack;
  129.     OutCallBack : TMidiCallBack;
  130.  
  131.     InState     : BYTE;
  132.  
  133.   END;
  134.   PMPU401DriverInfo = ^TMPU401DriverInfo;
  135.  
  136. Const
  137.  
  138.   sMPU401Ready       = $00;
  139.   sMPU401Started     = $01;
  140.   sMPU401Stopped     = $02;
  141.  
  142.   sMPU401BuffersFull = $80;
  143.  
  144. Type
  145.  
  146.   TMidiDriverPacket = RECORD
  147.  
  148.     Func         : WORD;
  149.     ID           : Pointer;
  150.  
  151.     DriverInfo   : Pointer;
  152.  
  153.     Handle       : TMidiHandle;
  154.     DeviceID     : WORD;
  155.     CallBack     : TMidiCallBack;
  156.     OpenInstance : Pointer;
  157.     Flags        : LONGINT;
  158.  
  159.     MBH          : PMidiBuffHeader;
  160.  
  161.     Status       : WORD;
  162.  
  163.   END;
  164.  
  165.   PMidiDriverPacket = ^TMidiDriverPacket;
  166.  
  167.   TMidiDriverProc = Procedure( MDP    : PMidiDriverPacket );
  168.  
  169.   PMidiDriverProc = ^TMidiDriverProc;
  170.  
  171. Type
  172.  
  173.   TIHandleInfo = RECORD
  174.  
  175.     DeviceID     : WORD;
  176.  
  177.   END;
  178.  
  179.   TIDeviceInfo = RECORD
  180.  
  181.     Driver       : TMidiDriverProc;
  182.  
  183.     ID           : Pointer;
  184.  
  185.   END;
  186.  
  187. Var
  188.  
  189.   IH1Data : PMPU401DriverInfo;
  190.   IH2Data : PMPU401DriverInfo;
  191.   IH3Data : PMPU401DriverInfo;
  192.   IH4Data : PMPU401DriverInfo;
  193.  
  194.   IHUsed  : BYTE;
  195.  
  196.  
  197.   HandleInfoList : Array[1..16] of TIHandleInfo;
  198.   HandlesIssued : WORD;
  199.  
  200.  
  201.   MidiInDeviceInfoList : Array[1..16] of TIDeviceInfo;
  202.   NumMidiInDevices    : WORD;
  203.  
  204.  
  205.   MDP  : TMidiDriverPacket;
  206.  
  207. {────────────────────────────────────────────────────────────────────────────}
  208.  
  209. Function  VMidiDriverNew(         Proc           : TMidiDriverProc;
  210.                                   DriverInfo     : Pointer      ) : TError;
  211.  
  212. {--------------------------------------------------------------------------}
  213. {                                                                          }
  214. {                          Midi Output Functions                           }
  215. {                                                                          }
  216. {--------------------------------------------------------------------------}
  217.  
  218. Procedure VMidiOutGetDevCaps(     MidiOutCaps    : PMidiCaps    );
  219.  
  220. Procedure VMidiOutOpen(       Var Handle         : TMidiHandle;
  221.                                   DeviceID       : WORD;
  222.                                   CallBack       : TMidiCallBack;
  223.                                   Instance       : Pointer;
  224.                                   Flags          : LONGINT      );
  225.  
  226. Procedure VMidiOutShortMsg(       Handle         : TMidiHandle;
  227.                                   Message        : TMidiMessage );
  228.  
  229. Procedure VMidiOutPrepareHeader;
  230.  
  231. Procedure VMidiOutUnPrepareHeader;
  232.  
  233. Procedure VMidiOutLongMsg(        MidiBuffHdr    : PMidiBuffHeader;
  234.                                   Handle         : TMidiHandle  );
  235.  
  236. Procedure VMidiOutClose(          Handle         : TMidiHandle  );
  237.  
  238. {--------------------------------------------------------------------------}
  239. {                                                                          }
  240. {                          Midi Input Functions                            }
  241. {                                                                          }
  242. {--------------------------------------------------------------------------}
  243.  
  244. Function  VMidiInGetNumDevs                                       : WORD;
  245.  
  246. Procedure VMidiInGetDevCaps(      MidiInCaps     : PMidiCaps    );
  247.  
  248. Procedure VMidiInOpen(        Var Handle         : TMidiHandle;
  249.                                   DeviceID       : WORD;
  250.                                   CallBack       : TMidiCallBack;
  251.                                   Instance       : Pointer;
  252.                                   Flags          : LONGINT      );
  253.  
  254. Procedure VMidiInPrepareHeader(   MidiBuffHdr    : PMidiBuffHeader );
  255.  
  256. Procedure VMidiInUnPrepareHeader( MidiBuffHdr    : PMidiBuffHeader );
  257.  
  258. Procedure VMidiInAddBuffer(       MidiBuffHdr    : PMidiBuffHeader );
  259.  
  260. Procedure VMidiInReset(           Handle         : TMidiHandle  );
  261.  
  262. Procedure VMidiInStart(           Handle         : TMidiHandle  );
  263.  
  264. Procedure VMidiInStop(            Handle         : TMidiHandle  );
  265.  
  266. Procedure VMidiInClose(           Handle         : TMidiHandle  );
  267.  
  268. {────────────────────────────────────────────────────────────────────────────}
  269.  
  270.